#include <iostream>
#include <stdint.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/eventfd.h>

int main ()
{
    int efd = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK);
    if(efd < 0)
    {
        perror("eventfd failed!");
    }
    //将需要通知的事件写入到fd中，这里的写入是事件次数，并不关心是什么事件；
    uint64_t val = 1;
    write(efd, &val, sizeof(val));
    write(efd, &val, sizeof(val));
    write(efd, &val, sizeof(val));
    write(efd, &val, sizeof(val));
    //从eventfd中触发了的事件次数
    uint64_t res = 0;
    read(efd, &res, sizeof(res));
    std::cout << res << std::endl;
    return 0;
}
